#ifndef _RENZO_CONST_
#define _RENZO_CONST_

namespace Renzo {
/*
 * Render system 
 */
#define RENZO_GL		// use OpenGL

/*
 * File name
 */

/*
:: Cannot redefine const in every header file.
:: Cannot define kLogFileName in every header file without const (will eat up a lot memory)
:: Log is used everywhere
:: I want constant to stay in one place
:: So use MACRO instead.

const char* kLogFileName = "runtime.log";
const char* kErrorFileName	= "stderr.log";
const char* kStdoutFileName	= "stdout.log";
*/

#define FILE_LOG		"runtime.log"
#define FILE_STDERR		"stderr.log"
#define FILE_STDOUT		"stdout.log"

/*
 * Error messages
 */
#define ERROR_FILE_NOT_FOUND	"File %s not found."
#define ERROR_MEMORY_ALLOC		"Memory allocation error."
#define ERROR_FILE_READ			"File %s read error."
#define ERROR_FILE_WRITE		"File %s write error."
#define ERROR_FILE_OPEN			"File %s open error."
#define ERROR_DLL_LOAD			"Dynamic link library %s failed to load."
#define ERROR_DLL_SYMBOL_NOT_FOUND	"Symbol %s in %s not found."
#define ERROR_FILE_UNKNOWN_FORMAT	"Unknown %s file format."
#define ERROR_ITEM_DUPLICATE_UNKNOWN		"Component already exists in this data structure. Operation failed."
#define ERROR_ITEM_DUPLICATE_OVERWRITTEN	"Component already exists in this data structure. Old value is overwritten."
#define ERROR_ITEM_NOT_FOUND				"Component not existed in this data structure."
#define ERROR_FUNCTION_NOT_IMPLEMENTED "Function not implemented."
///
/// Object type
///
#define ERROR_OBJECT_TYPE_NOT_FOUND			"ObjectType not found."
///
/// Object
///
#define ERROR_OBJECT_EXISTED		"Object existed."
#define ERROR_OBJECT_NOT_EXISTED	"Object not existed."
#define ERROR_OBJECT_NOT_FOUND		"Object not found."
///
/// CreateFunc
///
#define ERROR_CREATOR_EXISTED		"Creator existed."
#define ERROR_CREATOR_NOT_FOUND		"Creator not found."
/*
 * Exit code
 */
#define EXIT_FILE_NOT_FOUND	4
#define EXIT_MEMORY_ALLOC	1
#define EXIT_FILE_READ		2
#define EXIT_ASSERT			3

/*
 * Plugin "constructor" and "destructor" symbol
 */
#define SYMBOL_DLL_START	"dllStartPlugin"
#define SYMBOL_DLL_STOP		"dllStopPlugin"

/**
 Maximum number of resource types supported (8 bits for resource type part in ResourceID -> 256).
 This declaration is for information only. The actual number of resources are NB_RESOURCE_TYPES.
 */
//#define MAX_RESOURCE_TYPE	256

}
#endif